#ifndef __SC_COMPILER_COMMAND_H__
#define __SC_COMPILER_COMMAND_H__

////////////////////////////////////////////////////////////////////////////////
// Includes
////////////////////////////////////////////////////////////////////////////////

#include <vector>
#include <string>
#include <iostream>

#include "SCC_LibConfig.h"

////////////////////////////////////////////////////////////////////////////////
// Namespaces
////////////////////////////////////////////////////////////////////////////////

namespace SC {

////////////////////////////////////////////////////////////////////////////////
// Implementation
////////////////////////////////////////////////////////////////////////////////

/**
 *  This class defines a the compiler command.
 */
class SCCompilerCommand {

	public:
		
		/// Constructor
		SCCompilerCommand(std::ostream & ostream = std::cout) : ostream(ostream) {}
		
		/// Interpret command arguments
		const bool Command(const std::vector<std::string> &);

	protected:

		/// Print command help
		void help(const std::string &);
		
		/// Print error
		void error(const std::string & = "");
		
		/// Output stream where to print
		std::ostream & ostream;

};

////////////////////////////////////////////////////////////////////////////////
// Closing Namespaces
////////////////////////////////////////////////////////////////////////////////

}

////////////////////////////////////////////////////////////////////////////////

#endif
